package y2015.date0915am.服务端;

import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    @Test
    public void main() throws Exception {
        //服务器端口
        int port = 9527;
        //服务器对象10086
        ServerSocket ss = null;//此类实现服务器套接字。
        //创建服务端对象
        try {
            ss = new ServerSocket(port);
            System.out.println("服务器成功启动在" + port + "端口！");
            // 与客户端通信的对象（10086的人工客服）
            // ServerSocket的accept()方法是个阻塞方法
            System.out.println("正在等待客户端连接 ... ...");

            Socket socket = ss.accept();//侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。
            System.out.println("客户端已经连接。");
            // 欢迎语
            String welcome = "Good morning !!!";
            System.out.println("准备发送欢迎语 ... ...");
            // 得到传输数据的流
            OutputStream out = socket.getOutputStream();//返回此套接字的输出流。
            PrintWriter pw = new PrintWriter(out);
            // 发送数据
            pw.println(welcome);
            pw.flush();
            System.out.println("欢迎语【" + welcome + "】已经发送。");
            // 关闭
            pw.close();
            System.out.println("本次通信结束！");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ss != null) {
                try {
                    ss.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

